package truly;

import ordinary.CurrentConditions;

import java.util.ArrayList;

/**
 * @Author Big_white
 * @Date 2021/11/19
 */
/*
 *核心类
 * 1.包含新的天气情况信息
 * 2.含有观察者集合，使用ArrayList管理
 * 3.当数据有更新时，就主动调用ArrayList，通知所有的接入方看到最新的消息
 * */
public class WeatherData implements Subject{

    private float temperature;
    private float pressure;
    private float humidity;
    //观察者集合
    private  ArrayList<Observer> observers;
    public WeatherData(){
        observers=new ArrayList<Observer>();
    }

    //注册一个观察者
    @Override
    public void registerObserver(Observer o) {
        observers.add(o);
    }

    //移除一个观察者
    @Override
    public void removeObserver(Observer o) {
        if(observers.contains(o)){
            observers.remove(o);
        }
    }

    //遍历所有的观察者，并通知
    @Override
    public void notifyObservers() {
        for(int i=0;i<observers.size();i++){
            observers.get(i).update(this.temperature,this.pressure,this.humidity);
        }
    }

    public float getTemperature() {
        return temperature;
    }

    public float getPressure() {
        return pressure;
    }

    public float getHumidity() {
        return humidity;
    }
    public void dataChange(){
        notifyObservers();
    }
    public void setData(float temperature,float pressure,float humidity){
        this.temperature=temperature;
        this.pressure=pressure;
        this.humidity=humidity;
        dataChange();
    }
}
